home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / PROFILER / README.DOC < prev    next >
Encoding:
Text File  |  1989-06-16  |  31.8 KB  |  594 lines

  1. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>(c) 1989 mkb<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  2.                        
  3.                        
  4.                                                           
  5.                  ---------------------------------------------
  6.                  ---------------------------------------------
  7.                  --  Profiler V2.* [ATARI ST - GEM-Version] --
  8.                  ---------------------------------------------
  9.                  ---------------------------------------------
  10.                      
  11.  
  12.                           Dokumentation Stand 21.04.89
  13.                           ----------------------------
  14.  
  15.  
  16.  
  17.    I. Einleitung in die Theorie
  18.   II. Einführung in die Anwendung
  19.  III. Hinweise
  20.   IV. UPDATE-Service
  21.    V. Hinweise für die Weitergabe  
  22.   VI. Beispiele
  23.  VII. Hinweise auf die implementierte Version
  24.   
  25.   I. Einleitung in die Theorie
  26.   -----------------------------
  27.   
  28.   Das Programm ist hervorgegangen aus der Lösung für die Aufgabe 3 der 2.
  29.   Runde des BwINF 88/89. Die Benutzeroberfläche wurde eingefügt und das
  30.   Filehandling vollständig neu teilw. in Assembler entwickelt. Das Profiler-
  31.   System stellt nun einen Maximum an Komfort (durch GEM) und Komplexizität
  32.   (eine Fülle von Parametern werden beachtet) bereit und kann Pascalprogramme
  33.   in verschiedenen Stufen auf ihr Laufzeitverhalten überprüfen. Dabei können 
  34.   die Files sehr lang sein. Zudem kann das Prgramm leicht auf spezielle
  35.   Pascal-Versionen angepasst werden, was allerdings von mir durchgeführt
  36.   werden muß.
  37.   
  38.   Ein Profiler (engl. profile = Profil, kleine Biographie) stellt also ein
  39.   Profil eines Pascal-Sourceprogrammes her und liefert eine kleine Biographie
  40.   desselben Programmes nach einen Testlauf : Das Quellfile mit eingefügten 
  41.   Zählern.
  42.   
  43.   Auf deutsch : Man hat einen Pascaltext. Dieser wird nun untersucht (mit
  44.   profile1.prg) und an relevanten Stellen Zählbefehle eingefügt. Dieses so
  45.   gebildete Metafile wird nun testweise durchlaufen. Am Ende des Testlaufes 
  46.   werden die ermittelten Zählerstände (hier automatisch) auf Diskette ge-
  47.   speichert. Aus diesem "Wertefile" und dem ursprünglichen Programmtext wird 
  48.   nun ein Zielfile gebildet, das aus dem alten Programmtext mit den Zähler-
  49.   werten (an den entsprechenden Stellen als Kommentare eingefügt) besteht 
  50.   (profile2.prg). Aus diesen Zählerwerten kann man nun das Laufzeitverhalten 
  51.   des Programmes ablesen : Wie oft werden Schleifen insgesamt durchlaufen, wie 
  52.   oft Prozeduren/Funktionen aufgerufen, wie tief ist das Programm verschachtelt,
  53.   welche Werte haben die Variablen, wie oft werden diese verwendet....
  54.   
  55.   Man spart sich also das mühsame Durchsehen der Programmtexte auf nicht-
  56.   verwendete Variablen oder Prozeduren/Funktionen. Wenn eine Schleife noch
  57.   öfter durchlaufen wird, als angenommen oder ein Programm tiefer rekursiv
  58.   verschachtelt ist, als es eigentlich sollte, so kann man den Programmtext
  59.   optimieren. Die Profilierung stellt also ein Hilfsmittel zur Programmierung
  60.   von absolut 'sauberen' Programmen dar, was nützlich bei der Programmierung
  61.   von Beispielprogrammen oder Programmen der allgemeinen Informatik, aber auch
  62.   bei der Überprüfunh von diesen und anderen Projekten ist.
  63.   
  64.   Da die Analyse eines korrekten Programmes schon komplex genug ist, kann
  65.   die vorliegende Version nur grobe Programmierfehler (wenn 'END's fehlen
  66.   o.ä.) erkennen. Man verwendet den Profiler also zur abschliessenden Durch-
  67.   sicht eines fertigen Programmes oder zum Testen von syntaxtisch richtigen
  68.   Programmen, die nicht das tun, was sie sollen.
  69.   
  70.   
  71.   II. Einführung in die Anwendung
  72.   -------------------------------
  73.   
  74.   Das Profilersystem besteht aus 2 Teilen (intern sogar aus drei). Der erste
  75.   Teil 'profile1.prg' liest den Quellcode ein und erzeugt ein Testfile.
  76.   Der zweite Teil 'profile2.prg' mischt den ursprünglichen Quelltext und
  77.   erzeugt das Zielfile mit eingestreuten Zählerwerten.
  78.   
  79.   Um die einzelnen Teile zu starten, muß man sich im GEM-Desktop oder einer
  80.   GEM-Schell befinden. Anklicken von 'profile1.prg' oder 'profile2.prg'
  81.   lädt das entsprechende Programm, welches 'profile1.rsc' bzw. 'profile2.rsc'
  82.   nachlädt. Weiter muß sich auf dem aktuellen Ordner noch 'profile.inf'
  83.   vorhanden sein.
  84.   
  85.   Man befindet sich in der Benutzeroberfläche. Alle Optionen, die wählbar sind,
  86.   können durch Anklicken im Menü betätigt werden. Bei Einträgen mit drei 
  87.   Punkten kommt noch eine zusätzliche Auswahlbox.
  88.   
  89.   Die Menüpunkte, die sich aufgrund der aktuellen Eingabesituation (noch kein
  90.   File gewählt o.ä) nicht anwählen lassen, d.h. gesperrt sind, werden nach
  91.   Tätigkeiten, durch die die Funktionen der Menüpunkte sinnvoll werden,
  92.   wieder als anwählbar gesetzt. Alle Optionen lassen sich erst nach einem
  93.   Profilerlauf anwählen. 
  94.   
  95.   Erklärung der Menüpunkte :
  96.  
  97.    "DESK"-Menu
  98.    
  99.    "Über Profiler"           : 
  100.     
  101.                    Eine Infobox mit der Versionsnummer (s.u.) und dem 
  102.                    Programmnamen erscheint. Wichtig bei den verschiedenen 
  103.                    Pascal-Versionen.
  104.                    
  105.    "DATEI"-Menu
  106.     
  107.    "Öffne Quellfile..." [profile1.prg] : 
  108.                    
  109.                    Das Auswählen aller Files wird mit der eingebauten oder
  110.                    einer selbst installierten FILESELECTOR-Box durchgeführt.
  111.                    Die übliche Bedienung. Verschiedene Laufwerke können
  112.                    angewählt werden, Harddisk/Ram/Eprom-Disks werden unter-
  113.                    stützt.
  114.                    Öffne das Quellfile. Damit ist das Pascal-Programm gemeint,
  115.                    welches profiliert werden soll.
  116.                    Dieses File muß normalerweise im ASCII-Format vorliegen
  117.                    (bei Sonderversionen siehe 'Hinweise zu den Dateien').
  118.                    Das File muß bereits auf der Diskette vorhanden sein, nach 
  119.                    Anwählen wird der Name mit vollständiger Dateipfadbe-
  120.                    zeichnung rechts oben in der Menüzeile als 'source' an-
  121.                    gezeigt.
  122.                    
  123.     "Öffne Wertefile..." [profile2.prg] :
  124.     
  125.                    Öffne das Wertefile. Damit ist das File gemeint, das
  126.                    automatisch erzeugt wird, wenn Sie das Testfile (s.o.)
  127.                    mit ihrem Pascal-Compiler durchlaufen haben. Es enthält
  128.                    die Zählerstände. Die Files, die mit diesem Punkt geöffnet
  129.                    werden, müssen einerseits schon auf Dikette vorliegen,
  130.                    dem entsprechenden Dateiformat (also ASCII oder Sonder-
  131.                    format) genügen und außerdem tatsächlich Wertefiles sein.
  132.                    Das Programm erkennt die Wertefiles an einem bestimmten
  133.                    Text im File. Ist dieser Text nicht in der Datei enthalten,
  134.                    so wird eine Warnmeldung ausgegeben, das File dann aber
  135.                    geöffnet (zu Prüfzwecken Ihrerseits etc.). Wird diese 
  136.                    Warnmeldung ('Kein Wertefile') ausgegeben, so kann dieses
  137.                    File nicht für die Profilierung verwendet werden. 
  138.                    Auch hier wird das angewählte File rechts oben in der 
  139.                    Menüleiste mit vollständiger Pfadbezeichnung angeschrieben.
  140.                    
  141.     "Bestimme Testfile..." [profile1.prg] : 
  142.                    
  143.                    Öffne das Testfile.
  144.                    Die Option 'bestimmt' ein Testfile, da das angewählte
  145.                    File nicht unbedingt auf der Diskette schon vorhanden ist.
  146.                    Wählt man ein File aus, so wird dieses automatisch neu
  147.                    erzeugt, ist es schon vorhanden, so wird es lediglich
  148.                    geöffnet.
  149.                    Im Zielfile befindet sich nach dem Profilerlauf der
  150.                    Quelltext für das Testprogramm, daher hat das File den
  151.                    Namen 'Testfile'.
  152.                    
  153.     "Bestimme Zielfile..." [profile2.prg] :
  154.     
  155.                    Dieser Menüpunkt ist nur unter profile2.prg wählbar.
  156.                    Funktioniert wie 'Bestimme Testfile' in profile1.prg,
  157.                    nach dem Profilerlauf befindet sich aber der Endtext,
  158.                    das ürsprüngliche Programm mit eingefügten Zählern, in 
  159.                    diesem File.
  160.                    
  161.     "Zeige XXX..."          :
  162.     
  163.                    Diese Menüpunkte bewirken das Öffnen eines Anzeigefensters
  164.                    und zeigen das entsprechende File seitenweise. Zum Um-
  165.                    blättern auf die nächste Seite eine beliebige Taste be-
  166.                    tätigen, zum vorzeitigen Abbruch die Taste <E> betätigen.
  167.                    
  168.     "Konvertieren"-Menu
  169.     
  170.     "Variablenzählung ein"/"Variablenzählung aus" [profiler_1.prg] :
  171.     
  172.                    Mit Anwählen des entsprechenden Menüpunktes (entsprechend
  173.                    der aktuellen Eingabesituation wird der eine durch den
  174.                    anderen ersetzt !) wird die Option Variablenzählung ein-
  175.                    geschaltet (bei Anklicken von "Variablenzählung ein" !)
  176.                    bzw. ausgeschaltet. Das 'ein' oder 'aus' bezeichnen den
  177.                    entsprechenden Zustand NACH dem Anwählen des Punktes.
  178.                    Haben sie "Variablenzählung ein" angewählt, so werden Sie
  179.                    von einer Alert-Box auf die wichtigsten Nachteile der
  180.                    Variablenzählung aufmerksam gemacht. Sie können noch ab-
  181.                    brechen, wenn Sie die Nachteile nicht eingehen können.
  182.                    Weitere Einzelheiten siehe Teil IV.
  183.                    
  184.     "Druckprotokoll ein" [profiler_2.prg] :
  185.     
  186.                    Dieser Menüpunkt lenkt während des Profilerdurchlaufes die
  187.                    Ausgabe des Zieltextes zusätzlich (!) auf den Drucker
  188.                    (daher 'Protokoll'). Auch hier bezeichnet 'ein'/'aus' den
  189.                    Zustand NACH dem Anwählen des Menüpunktes.
  190.                    Der Profilierungsvorgang wird entsprechend der Geschwindig-
  191.                    keit des EPSON/IBM kompatiblen Druckers an der Parallel-
  192.                    Schnittstelle verlangsamt. Ein Druckerspooler ist nützlich !
  193.                    
  194.     "Konvertreport"         :
  195.     
  196.                    Dieser seltsam klingende Menüpunkt zaubert nach Anwahl ein
  197.                    wunderschönes Formular auf den Bildschirm, welches zusätz-
  198.                    liche Angaben über den letzten (!) Profilierungsvorgang
  199.                    enthält.
  200.                    Die Angabe der verwendeten Files ist eine Gedächtnisstütze.
  201.                    Die Angabe über Variablenprüfung ist schon wichtiger.
  202.                    War sie überhaupt an (entsprechend ein 'EIN'/'AUS' in der
  203.                    mittleren Box) ? Wieviele Variablen wurden gezählt
  204.                    ('Variablen') ? WIeviele skalare Typen (INTEGER,BYTE, etc)
  205.                    waren daran beteiligt ('Skalare',rechts oben in der 
  206.                    Box) ? Entsprechend : Wie viele reale Typen (REAL, etc)
  207.                    waren daran beteiligt ? 
  208.                    Nur wenige Variablentypen können einfach mit zwei weiteren
  209.                    Zählern zur Bereichsüberprüfung herangezogen werden : so
  210.                    alle skalaren Typen und REALe. Welche Typen nun als
  211.                    REAL/Skalar behandelt wurden, teilt der untere Teil der
  212.                    mittleren Box mit : Auf 'Skalar' folgen die ersten Namen
  213.                    für alle Typen, die das Programm als INTEGER-like behandelt.
  214.                    Auch eigene Variablendefinitionen können gezählt werden und
  215.                    auf ihre Bereiche geprüft werden (s.u.). Nicht alle 
  216.                    Namen passen u.U. in die Box.
  217.                    Nach 'Real' folgen die Namen der REAL-like-Variablen.
  218.                    Achtung : Bei eingeschalteter Variablenprüfung wird das
  219.                    Vorkommen JEDER Variable quantitativ überprüft - aber nur
  220.                    bei INTEGER/REAL-like-Variablen wird eine zusätzliche
  221.                    Bereichsprüfung durchgeführt. Diese Bereichsprüfung kann
  222.                    man durch 'profile.inf' steuern.
  223.                    Der Wert nach 'Bedarf' stellt den Speicherplatz dar, den
  224.                    die Zähler für die Bereichsüberprüfung ausmachen - nicht
  225.                    den Speicherplatz aller Zähler - man kann so überprüfen,
  226.                    ob noch genug Speicher vorhanden ist.
  227.                    Die Werte 'Zeilen XXXFile' werden durch Zählung beim Profi-
  228.                    lierungsvorgang gewonnen, der Wert 'Filegrößendifferenz'
  229.                    bezeichnet den Prozentsatz, den die Länge des erzeugten
  230.                    Files im Gegensatz zum Quellfile (auch in profile2.prg !)
  231.                    dastellt. Er ist wichtig, um den Speicherplatz zu über-
  232.                    schlagen.
  233.                    Die 'Zeit' stellt die Zeitspanne dar, die der Profilierungs-
  234.                    vorgang mit allen Diskarbeiten benötigt. Nimmt man eine
  235.                    RAM-Disk statt Disketten, so läßt sich die benötigte Zeit
  236.                    sehr erheblich verringern (!).
  237.                    
  238.     "Start"                :
  239.     
  240.                    Der Profilierungsvorgang wird gestartet. 
  241.                    Wurde nur ein Quellfile/Wertefile gewählt, aber noch
  242.                    kein Zielfile, so wird als Testfile in 'profile1.prg'
  243.                    ein File mit der selben Dateibezeichnung wie das Quellfile
  244.                    aber mit der Extension '.TST' erzeugt; in 'profile2.prg'
  245.                    wird ein Zielfile mit der Extension '.PRO' erzeugt.
  246.                    Eine Infobox informiert über den Fortgang der Profilierung.
  247.                    Die aktuelle Zeilennummer wird angezeigt.
  248.                    Fehler werden in einer zusätzlichen Box angezeigt.
  249.                    Nach einem Fehler wird die Profilierung beendet. 
  250.                    Wird die Profilierung erfolgreich oder mit Fehler beendet,
  251.                    so wird dies in einer Alertbox verkündet, ebenso die 
  252.                    Anzahl Fehler. Nur wenn diese '0' ist, sollte weiterge-
  253.                    arbeitet werden.
  254.                    Übrigens werden nicht alle Fehler erkannt : Schreibfehler
  255.                    werden oft vernachlässigt, da ansonsten die Fehlerüberprü-
  256.                    fung das Programm verlangsamen würde. Es wird daher em-
  257.                    pfohlen, nicht allzu volle DIsketten oder no-name-Ware zu 
  258.                    verwenden.
  259.                    Eine RAM-Disk (ordentlich groß) leistet hier Wunderdinge
  260.                    (in der 512kB-Version sind dafür noch ca 80kB frei!).
  261.  
  262.  
  263.   III. Hinweise
  264.   -------------
  265.   
  266.   Hinweise zu den Dateien
  267.   - - - - - - - - - - - -
  268.   
  269.     Das Profilersystem kennt vier Filetypen :
  270.     a) Quellfile [auch Source] ist IHR PASCALTEXT. Das File hat keine fest-
  271.        gelegte Endung, '.PAS' wäre sinnvoll.
  272.        Das Quellfile muß dem TURBO-Pascal-Standard gehorchen, wobei nur die
  273.        Syntax der überprüften Wörter wichtig ist (s.u.). 
  274.        Das Quellfile darf sämtliche nach der Sprachdefinition zulässigen
  275.        Anweisungen und Kniffe (z.B. kein Semikolon vor END) enthalten.
  276.        Jedes Programm, das compiliert werden kann, kann auch profiliert
  277.        werden (rein theoretisch ohne Ausnahme). Auf (hoffentlich) sämtliche
  278.        Sonderfälle wird eingegangen. 
  279.     b) Testfile ist DER PASCALTEXT MIT ZUSÄTZLICHEN ANWEISUNGEN ZUR ZÄHLER-
  280.        BEHANDLUNG. Der Testtext ist so verändert, daß Sie Ihr Programm bestimmt
  281.        nicht mehr erkennen (schauen Sie sich ein solches File mal an !).
  282.        Obwohl der Testtext völlig anders ist, macht er (meistens) genau das
  283.        gleiche wie das Quellprogramm. Man erkennt allerhöchstens an der 
  284.        Geschwindigkeit, daß ein Testlauf stattfindet : Keine Bildschirmmeldung
  285.        wird verfälscht (übrigens auch Kommentare im Quelltext nicht !), kein
  286.        Ergebnis verändert. Lediglich am Ende des Testlaufes wird auf das 
  287.        Diskettenlaufwerk zurückgegriffen, eine zusätzlich eingefügte Bildschirm-
  288.        meldung verkündet, was Sie als nächstes zu tun haben.
  289.        Das TESTFILE hat als Standartwert die gleiche Dateibezeichnung wie das
  290.        QUELLFILE, aber die Extension '.TST' (das kann man aber durch Bestimmen
  291.        des Testfiles vor dem Profilieren in profile1.prg selber bestimmen). 
  292.        Am Ende eines Testlaufes wird ein 
  293.     c) WERTEFILE geschrieben. Ein WERTEFILE ENTHÄLT DIE ZÄHLERSTANDE DES TEST-
  294.        LAUFES ALS REAL-WERTE, zusätzlich Informationen über Variablenzählung,
  295.        Sourcefile und Anzahl der Zähler. Weiter ist eine Dateikennung für
  296.        'profile2.prg' enthalten.
  297.        Wichtig : Die Diskette, auf der das TESTFILE ist, muß im SELBEN LAUF-
  298.        WERK eingelegt sein wie beim ersten Profilerdurchlauf, wenn das 
  299.        WERTEFILE erzeugt wird (nach dem Testlauf), denn das WERTEFILE hat die 
  300.        gleiche Dateibezeichnung wie das TESTFILE, aber die Extension '.WRT' 
  301.        (immer !). Aus dem Quellfile und dem Wertefile machen Sie mit 
  302.        'profile2.prg' das
  303.     d) ZIELFILE. Das ZIELFILE ist IHR PASCALTEXT MIT DEN ZÄHLERSTÄNDEN DES
  304.        WERTEFILES ALS KOMMENTAR EINGEFÜHT, und zwar an der entsprechenden 
  305.        Stelle (s.u.). Das ZIELFILE hat als Standardextension '.PRO', diese
  306.        kann aber in 'profile2.prg' durch 'Bestimme Zielfile' genauso geändert
  307.        werden wie der gesamte Dateiname. 
  308.        Während das ZIELFILE erzeugt wird, muß die Diskette mit dem QUELLFILE
  309.        im selben Laufwerk eingelegt sein wie beim Profilerlauf von profile1.prg.
  310.        
  311.     Nach Erzeugen des Zielfiles können die übrigen drei Files gelöscht werden.
  312.     Während der Profiliervorgänge ist es nicht empfehlenswert, die Diskette(n) 
  313.     mit den vier Files (soweit erzeugt) aus dem Laufwerk zu nehmen oder die
  314.     Anordnung der Dateien zu ändern, etwa durch Umbenennen. 
  315.     Wichtig :
  316.     Das QUELLFILE wird auch noch in 'profile2.prg' benötigt, und zwar unter
  317.     demselben Namen, wie es in 'profile1.prg' bezeichnet wurde - hat sich
  318.     dieser geändert, wird das nicht erkannt. Auch sollte 'profile.inf' nicht
  319.     geändert werden.
  320.                 
  321.   Hinweise zum Speicherbedarf
  322.   - - - - - - - - - - - - - -
  323.   
  324.     Das Profiler-System ist ausgelegt für 512kB, wobei noch ca. 80kB frei für
  325.     eine RAM-Disk sind. 
  326.     Es können Files unbeschränkter Länge profiliert werden - beschränkt ist 
  327.     allerdinga die Anzahl von Prozeduren,Funktionen,BEGINs,Schleifen jeder 
  328.     Art und, falls Variablenzählung angewählt, die Anzahl Variablen. In der 
  329.     vorliegenden Version können Sie maximal 600 Schleifen verwenden, 9 
  330.     Prozeduren/Funktionen-Ebenen und bis zu 250 Variablen, die beliebig auf
  331.     alle 9 Ebenen verteilt werden dürfen. Durch die Einteilung in Ebenen können 
  332.     lokale und globale Variablen selbst mit gleichen Namen korrekt inter-
  333.     pretiert werden.
  334.     Es gibt aber noch eine Einschränkung : Eine Anweisung darf maximal 65
  335.     verschiedene Variablen enthalten, es können also keine Prozeduren mit
  336.     66 verschiedenen Übergabeparametern korrekt profiliert werden.
  337.     Müssen größere Files profiliert werden, so sollten Sie auf die Variablen-
  338.     zählung oder zumindest auf die Bereichsprüfung verzichten. Speicherüber-
  339.     läufe werden übrigens angezeigt.
  340.     Bei komplexen Programmen ist der Geschwindigkeit wegen ebenfalls ein Ein-
  341.     schränken der Bereichsüberprüfung vorzuschlagen.
  342.     Sollten Sie eine 'größere' Version benötigen : siehe Update-Service.
  343.                                       
  344.   Hinweise zu 'profile.inf'
  345.   - - - - - - - - - - - - -
  346.     
  347.     Hiermit kann man die Bereichsprüfung steuern. Will man statt INTEGER-
  348.     Variablen BYTEs oder LONG_INTEGERs zählen, so ändert man 'profile.inf'
  349.     mit einem Texteditor. Das File muß als ASCII-Text so vorliegen :
  350.     
  351.     1 [Skalarname 1]                             Beispiel :
  352.     2 [Skalarname 2]                             ----------
  353.     3 [Skalarname 3]
  354.     4 [Skalarname 4]                                 1 INTEGER
  355.     5 [Skalarname 5]                                 2 ENDE
  356.     6 ENDE                                           3 REAL
  357.     7 [Realname 1]                                   4 ENDE
  358.     8 [Realname 2]                                   5 8
  359.     9 [Realname 3]
  360.    10 [Realname 4]
  361.    11 [Realname 5]
  362.    12 ENDE
  363.    13 {Speicherbedarf einer REAL-Variablen in Bytes}
  364.  
  365.     Die Zeilen in eckigen Klammern sind optional. Die Zeile in geschweiften
  366.     Klammern muß eine Zahl enthalten. Sie wird für die Speicherplatzberechnung
  367.     verwendet.
  368.     Läßt man alle Typennamen weg, so werden die Vorkommen aller Variablen
  369.     weiterhin gezählt, aber keine Bereichsprüfung angewendet (bringt
  370.     Geschwindigkeits/Speicherplatzvorteile). Es wird empfohlen, mehrere
  371.     solche Files anzulegen für verschiedene Stufen der Profilierung. Die ge-
  372.     wünschte Stufe kann durch Umbenennen des entsprechenen Files in
  373.     'profile.inf' eingestellt werden.
  374.     Das File muß im Aufrufordner von 'profile1.prg'/'profile2.prg' stehen.
  375.     
  376.   Hinweise zum Verarbeiten der profilierten Zielfiles
  377.   - - - - - - - - - - - - - - - - - - - - - - - - - -
  378.  
  379.     Der Zählerstand, der nach dem Testlauf feststeht, wird als Kommentar stets
  380.     in die Zeile eingefüft, wo das gezählte Objekt beginnt oder ausgeführt
  381.     wird. Passt ein Kommentar nicht mehr in die Zeile, so wird eine neue Zeile
  382.     eingefügt.
  383.     Wenn durch mehrere gezählte Objekte in einer Zeile mehrere Kommentare ein-
  384.     gefügt wurden, so ließt man die Kommentare von links nach rechts : Der 
  385.     erste Kommentar gehört zu dem ersten gezählten Objekt usw.
  386.     
  387.     Folgende Wörter führen zu Bildung eines Zählkommentares :
  388.     
  389.     "VAR  variable[,variable...] : <Typ>"
  390.       
  391.       Es wird ein Kommentar der Form
  392.         "{ variable : <zählerstand> [Min <zählerstand> Max <zählerstand>] }"
  393.       eingefügt. Der Teil in eckigen Klammern wird nur bei entsprechenden Typen
  394.       eingefügt (REAL/INTEGER). Die Variablenzählung wird nur bei einge-
  395.       schalteter Variablenzählung angewendet.
  396.       Für jede Variable (auch in Prozedurköpfen oder mit Kommas verbunden) wird
  397.       ein eigener Kommentar mit Namen eingefügt.
  398.       Es wird das Vorkommen der Variable in Rechenausdrücken gezählt, nicht
  399.       jedes Vorkommen. So führt der Ausdruck "I:=I+I" lediglich zu einem 
  400.       Erhöhen des Zählerstandes um die Zahl "1". Die Minima/Maxima-Werte werden
  401.       nach dem Rechenausdruck überprüft. Es zählen auch Verwendungen der 
  402.       Variable als Übergabeparameter bei Prozedur/Funktionsaufrufen.
  403.       Steht der Zähler nach dem Lauf auf "0", so werden keine Minima/Maxima-
  404.       Werte, sondern drei Querstriche angegeben (hiermit ist gemeint, daß
  405.       die Variable überhaupt nicht verwendet wurde - die Variablenwerte können 
  406.       natürlich "0" sein).
  407.       Bei lokalen/globalen Variablen kann die normale Namengebungsdefinition
  408.       angewendet werden. Ebenso bei Variablen in Prozedurköpen.
  409.       
  410.     "PROCEDURE name [(<Parameterdefinitionen>)] ;"
  411.     "FUNCTION name [(<Parameterdefinitionen>)] : <Typ> ;"
  412.     
  413.       Es wird ein Kommentar der Form
  414.         "{ <Zählerstand> }"
  415.       eingefügt. Der Zählerstand ermittelt sich durch die Summenbildung aller
  416.       Aufrufe dieser Prozedur/Funktion, egal ob diese Selbstaufrufe oder
  417.       Fremdaufrufe waren.
  418.       Hat sich während des Testlaufes ergeben, daß die Prozedur/Funktion
  419.       rekursiv programmiert ist, wird zusätzlich noch ein Kommentar der Form
  420.         "{ Max. Rekursion: <Zählerstand> }"
  421.       eingefügt. Der Zählerstand enthält nicht die Summe der Selbstaufrufe,
  422.       sondern die Tiefe der Rekursion. Ist Zählerstand etwa 100, so kann sich
  423.       die Prozedur 1000mal aufrufen, aber sie hat sich nur 100mal am Stück 
  424.       aufgerufen (wichtig bei Backtrackingalghorithmen).
  425.       Bei Übergabeparamterdefinitionen wird Variablenzählung angewendet, falls
  426.       aktiviert.
  427.       
  428.     "BEGIN" (ohne alles), "FOR-DO", "REPEAT", "WHILE"
  429.     
  430.       Es wird ein Kommentar der Form 
  431.         "{ <Zählerstand> }"
  432.       eingefügt. Der Zählerstand wird bei jedem Durchlauf des Blockes 
  433.       hochgezählt, stellt also die Summe aller Durchläufe dar. In Prozeduren :
  434.       Wenn der Zähler auf 100 steht, so heißt daß, daß insgesamt der
  435.       Block 100mal durchlaufen wurde, nicht aber, daß pro Prozeduraufruf der
  436.       Block 100mal durchlaufen wurde (!).
  437.       
  438.     "IF-THEN/ELSE"
  439.     
  440.       In der Zeile jedes der zwei Wörter-Einheiten wird jeweils (!) ein 
  441.       Kommentar der Form
  442.         "{ <Zählerstand> }"
  443.       eingefügt, wobei die Zählerstände wie bei "BEGIN" (s.o.) ermittelt werden.
  444.       Bei THEN/ELSE stellt die Zahl die tatsächlichen Durchläufe dar. Die Zahl
  445.       der Durchläufe des IF-Wortes allein ergibt sich durch vorherige Zähler-
  446.       kommentare z.B. bei einem BEGIN oder aus der Summe der Zähler des
  447.       THENs und des ELSEs.
  448.       Das ELSE kann weggelassen werden.
  449.      
  450.     "CASE-OF/:/ELSE"
  451.     
  452.       In der Zeile jedes der drei Wörter wird jeweils ein Kommentar der Form
  453.         "{ <Zählerstand> }"
  454.       eingefügt, wobei die Zählerstände wie bei "BEGIN" (s.o.) ermittelt werden.
  455.       Bei :/ELSE stellt die Zähl die tatsächlichen Durchläufe dar, sie kann
  456.       sich von der Zahl bei CASE-OF unterscheiden. 
  457.       Bei jedem ':' wird ein eigener Kommentar angefügt.
  458.       Das ELSE kann wegglesassen werden.
  459.       
  460.     Auf den ersten Blick erscheinen die Möglichkeiten begrenzt, tatsächlich kann
  461.     man aber damit die Anzahl Aufrufe sämlicher (!) Anweisungen über die
  462.     Zahl Schleifendurchläufe und Prozeduraufrufe etc. berechnen, bei übersicht-
  463.     licher Programmierung läßt sich dies praktisch sofort ablesen. Außerdem
  464.     kann mann sonst den Programmtext gar nicht mehr lesen. Weitere Wörter 
  465.     könnten aber leicht implementiert werden (bestimmte Operatoren o.ä.)
  466.  
  467.   IV. Update-Services
  468.   - - - - - - - - - -
  469.   
  470.     Ein solch komplexes Programm wie dieses Profilersystem (schließlich muß
  471.     ein 'freier' Quelltext vollständig auf einige für die Profilierung 
  472.     wichtige Parameter reduziert werden und daher das Programm genau analy-
  473.     siert werden) muß zwangsläufig in der Anfangsphase noch Fehler enthalten.
  474.     Das System wurde selbstverständlich mit verschiedensten Files (einige 
  475.     davon sind als Beispiele auf der Diskette) überprüft und auch schon einige
  476.     Fehler verbessert. Dennoch läßt sich ein kleiner Denk/Tippfehler nicht
  477.     immer erkennen.
  478.     Auch auf verschiedene Versionen kann nur bedingt eingegangen werden.
  479.     Verwendet wurde hier die Syntax der TURBO-Pascal-Versionen 3.XX, die
  480.     auch von KatCe-Pascal verwendet wird. Es kommt allerdings nur auf
  481.     die oben erläuterten Worter an, die in absolut jeder Pascal-Version
  482.     genau so implementiert sein werden.
  483.     Ein größeres Problem stellt das Erzeugen des Wertefiles durch das Testfile
  484.     dar, denn das Filehandling wird doch von verschiedenen Pascalversionen
  485.     anders behandelt. Auch hier lehnt sich der Profiler an TURBO-Pascal an.
  486.     Das Format der Files ist ASCII. Andere Fileformate können nicht verarbeitet
  487.     werden.
  488.     Das Programm ist für 512kB. Die Anzahl Zähler ist begrenzt (siehe oben).
  489.     
  490.     Tritt also ein Fehler auf, oder kommen Sie mit einigen der oben angeführten
  491.     Punkte in Konflikt (anderes Filesystem der Pascal-Version) bzw. wollen
  492.     Sie eine 1MB-Version oder haben Sie einen Wunsch, welche Erweiterung
  493.     noch nützlich wäre (auch bloße Anregungen und Kritik sind erwünscht),
  494.     so machen Sie folgendes :
  495.     
  496.      a) bei Fehler : Das Quellfile, in dem eine Struktur vorkommt, die fehler-
  497.         haft verarbeitet wird auf eine Diskette speichern, auf die auch die Pro-
  498.         filerprogramme mit allen Nebenfiles (s.o.) kommt. Kurze Beschreibung,
  499.         was nicht geht (wann und wo der Fehler auftritt, evtl. Ortung der
  500.         fehlerhaften Stelle) mitliefern.
  501.      b) bei Versionsproblemen : Wird das Quellprogramm zwar richtig profiliert,
  502.         das Testfile kann aber nicht mehr compiliert werden, so verfahren Sie
  503.         wie bei a). Weiter müssen Sie aber noch eine möglichst genaue Beschrei-
  504.         bung des Filesystems der Pascalversion beilegen. Am besten sind Kopien
  505.         der entsprechenden Seiten des Handbuches. Falls das Quellprogramm wegen
  506.         eines falschen Formates nicht gelesen werden kann, so legen Sie 
  507.         zusätzlich eine ausführliche Beschreibung des Formats bei, vielleicht
  508.         aich ein Beispielprogramm.
  509.      c) bei Speicherwünschen : Diskette mit gewünschter Größe (bis 1mB).
  510.      d) bei Sonderwünschen : Beschreibung der gewünschten Funktionen oder
  511.         Erweiterungen mit dem Profilersystem auf eine Diskette.
  512.         
  513.     Die Diskette schicken Sie an meine Adresse (1.70 Porto, Rückporto !).
  514.     Bei Fehlern und Versionsproblemen erhalten Sie Ihre Diskette mit einer
  515.     bereinigten Version so schnell wi möglich zurück, bei Sonderwünschen
  516.     bekommen Sie die Diskette zurück, falls der Wunsch verwirklicht werden 
  517.     kann.
  518.     
  519.     Ich erwarte kein Honorar o.ä.
  520.     
  521.     Es werden Versionen für die wichtigsten Pascal-Kompiler angestrebt, die
  522.     schon fertig angepasst sind. Bitte lassen Sie das Profiler-System daher
  523.     an Ihre Version anpassen - vielleicht existiert auch schon eine passende
  524.     Version !
  525.     
  526.     Auch über Anregungen, Kritik o.ä. freue ich mich.
  527.     
  528.     Adresse (Daten beachten!) :
  529.     
  530.      bis 1.8.89 :           ab 1.8.89 :
  531.      
  532.       Matthias Berger        Matthias Berger
  533.       Schlesierstr. 41       Im Wismat 31
  534.       
  535.       8034 Germering         8000 München 60
  536.      
  537.     
  538.     
  539.   V. Weitergabe-Hinweise
  540.   - - - - - - - - - - - 
  541.     
  542.     Das Programm kann frei verbreitet werden, allerdings sollen veränderte
  543.     Versionen nur nach Mitteilung an mich (für die Übersicht meinerseits)
  544.     weitergegeben werden. Die Copyrighthinweise dürfen nicht verändert werden.
  545.     Das System muß mit allen Nebenfiles weitergegeben werden, d.h.
  546.     profile1.prg/profile2.prg/profile1.rsc/profile2.rsc/profile.inf/
  547.     profile.doc.
  548.     
  549.     Das Programm ist nach neuesten Erkenntnissen der Bedienungstheorie und
  550.     der informatischen Grundlagenforschungen auf einem der moderndsten und
  551.     schnellsten ATARI ST geschrieben worden. In das Programm flossen mannig-
  552.     faltige Innovationen und Komplikationen ein, welche nicht allein durch
  553.     ein bloßes Mitliefern des Quelltextes in hinreichender Weise eruiert werden
  554.     könnten. Wollen Sie die verschlungenen Gedangengänge dieses Anwendungs-
  555.     programmes dennoch nachvollziehen, so fordern Sie die beiden Quelltexte
  556.     an. Bitte Rückporto (für 50 Seiten DIN A4...). Sie sollten über umfang-
  557.     reiche PASCAL und ASSEMBLER-Kenntnisse verfügen und viel Zeit aufbringen
  558.     könen.
  559.     
  560.   VI. Beispiele
  561.   - - - - - - -
  562.   
  563.     Auf der Diskette müssten sich vier Ordner mit den Files
  564.     'komposer.XXX'/'taler.XXX'/'mendel.XXX'/'prim.XXX'/tom07.XXX'/'tom19.XXX'
  565.     befinden. Die Benutzung der Progrämmelchen steht jeweils am Ende des
  566.     jeweiligen Files mit '.pas'-Endung, das File mit '.tst'-Endung ist
  567.     das dazugehörige Testfile, das File mit '.wrt' wurde beim Ausführen des
  568.     '.tst'-Textes erzeugt und aus den vorhergehenden Files wurde das File
  569.     mit '.pro' gemischt. 
  570.     Alle Files gehören zu einem Testlauf, welche Eingaben beim Ausführen des 
  571.     Programmes getätigt wurden. Welche Ergebnisse das Programm korrekterweise 
  572.     liefern müsste, steht ebenfalls am Ende des jeweiligen '.pas'-Files.        
  573.     Was man bei dem Progranmm besonders gut sehen kann, z.B. die Behandlung
  574.     rekursiver Prozeduren, wird angegeben.
  575.     Sie können mit diesen Files die Bedienung des Profilers üben und testen,
  576.     da die Ergebnisse vorgegeben sind.
  577.     
  578.   VII. Hinweise auf die implementierte Version
  579.   - - - - - - - - - - - - - - - - - - - - - - 
  580.   
  581.     Die mitgelieferte Version ist 2.KatCe/ASCII.
  582.     Die Syntax ist TURBO/KatCe-Pascal, das Filesystem ASCII.
  583.     KatCe-User : Bitte Version mit KatCe-Filesystem anfordern !
  584.     
  585.     
  586.    ----------------- Ende der Dokumentation vom 21.04.89 -------------------- 
  587.      
  588.      
  589.    
  590.                                                                      (c)89mkb
  591.     
  592.       
  593.        
  594.